const express = require('express');
const BookRouter = require('./routes/BookRouter');
const AdminRouter = require('./routes/AdminRouter');
const db = require('./db/db');
//导入 session 的工具包
const session = require("express-session");
const MongoStore = require('connect-mongo');

db(() => {
    //数据库的操作, 连接成功
    const app = express();
    //设置模板引擎
    app.set('view engine', 'ejs');
    app.set('views', __dirname + '/views');

    //设置中间件
    app.use(session({
        name: 'sid',   //设置cookie的name，默认值是：connect.sid
        secret: '1231231231241241231321', //参与加密的字符串（又称签名）
        saveUninitialized: false, //是否为每次请求都设置一个cookie用来存储session的id
        resave: true,//是否在每次请求时重新保存session
        store:MongoStore.create({
            mongoUrl: 'mongodb://127.0.0.1:27017/project' //数据库的连接配置
        }),
        cookie: {
            httpOnly: true, // 开启后前端无法通过 JS 操作
            maxAge: 1000 * 50 * 60 // 这一条 是控制 sessionID 的过期时间的！！！
        }
    }));


    //使用路由器对象
    app.use(BookRouter);
    app.use(AdminRouter);

    //声明根目录
    app.use(express.static(__dirname + '/public'));

    //设置路由
    app.get('/', (req, res) => {
        res.send('图书管理哦~~') 
    });

    //监听端口 
    app.listen(80, () => {
        console.log('服务已经启动. 80 正在监听中.....')
    });
    
}, () => {
    //连接失败
    console.log('连接失败....');
})

